package dryven.model.di;

/**
 * This interface can be implemented by objects that
 * are available during the lifetime of a thread.
 * They are used by some dependency injectors to inject values
 * that are unique for every thread.
 * 
 * Request implements this interface and is the mainly used
 * implementation throughout the framework. One of the values
 * that is stored in it is a database connection to all defined
 * database connections in the configuration (though they are lazily
 * opened).
 * @author bwindels
 *
 */
public interface LocalThreadStorage {

	public abstract Object getAttribute(String name);

	public abstract void setAttribute(String name, Object value);

	public abstract Iterable<String> getAttributeNames();
}